Firebird: StoredProc nebo View
Otázka od: Jiri Fait
13. 8. 2004 13:25
Ahoj
Resim, mozna zbytecne, problem, zda je lepsi pouzivat, tam kde to jde, View
nebo vsude pouzivat StoredProc.
Je nejaky vykonnostni rozdil v techto pristupech k datum?
Je rozdil v zatizeni serveru?
Jedna se o databazi na Firebird 1.5
Dekuji
Odpovedá: David Fajfr
13. 8. 2004 14:06
> Resim, mozna zbytecne, problem, zda je lepsi pouzivat, tam kde to jde,
View
> nebo vsude pouzivat StoredProc.
> Je nejaky vykonnostni rozdil v techto pristupech k datum?
> Je rozdil v zatizeni serveru?
Ahoj,
me se jevi nejlepsi view nepouzivat vubec a SP jen tam, kde potrebujes
nejake specialni funkce, ktere nedokazes udelat obycejnym dotazem do
tabulek.
View ma velkou nevyhodu v tom, ze kdyz potrebujes delat zmeny tabulky, musis
view zrusit a pak opet vytvorit, coz je pri intenzivnim vyvoji nekdy docela
pakarna.
Procedura zase neni moc idealni, pokud nedelas vyber zaznamu primo v ni, ale
v aplikaci. Takze kdyz predem nevis podle ceho uzivatel bude chtit vybirat
data, budes muset udelat proceduru, ktera v sobe nema zadna vyberova
kriteria a ta bude hodne pomala - bude srotit vzdycky vsechny zaznamy ikdyz
uzivatel chce jen par.
FB 1.5 uz ma EXECUTE STATEMENT, pomoci ceho by jsi mohl i v procedure delat
dynamicke selecty, ale tam jsem se jeste nedostal
David
Odpovedá: Benda Lukas
17. 8. 2004 18:10
>me se jevi nejlepsi view nepouzivat vubec a SP jen tam, kde potrebujes
>nejake specialni funkce, ktere nedokazes udelat obycejnym dotazem do
>tabulek.
>
>View ma velkou nevyhodu v tom, ze kdyz potrebujes delat zmeny tabulky, musis
>view zrusit a pak opet vytvorit, coz je pri intenzivnim vyvoji nekdy docela
>pakarna.
>
>Procedura zase neni moc idealni, pokud nedelas vyber zaznamu primo v ni, ale
>v aplikaci. Takze kdyz predem nevis podle ceho uzivatel bude chtit vybirat
>data, budes muset udelat proceduru, ktera v sobe nema zadna vyberova
>kriteria a ta bude hodne pomala - bude srotit vzdycky vsechny zaznamy ikdyz
>uzivatel chce jen par.
>
>FB 1.5 uz ma EXECUTE STATEMENT, pomoci ceho by jsi mohl i v procedure delat
>dynamicke selecty, ale tam jsem se jeste nedostal
>
Ahoj uznavam, ze mas pravdu v onech nevyhodach, ale existuji i
gyganticke vyhody View a StoredProc, ja osobne vlastne uzivatele
nepoustim k tabulkam jinak nez pres View a StoredProc. Kdyz je nechaz
zapisovat na primo udelaji ti v datech brutalni maglajz. Taky nerad
primo v aplikaci pozivam spojovani vice tabulek, pak chces to same
spojeni volat z vice ruznych mist, a kopirujes spojeni na trikrat.
Nakonec provedes zmenu a uz nedohledas, kde vsude to spojeni mas a musis
ho predelat.
Idealni je trivrstva architektura, pokud to ale nejde, pak jsem
zastanvem tohoo, aby se co nejvice prace s daty odehravala na servru.
Ohledne View a StoredProc se tyce, tak vsude tam kde to jde a vyhovuje
tak davat pohledy, protoze narozdil od procedur se nevytvareji pri
kazdem dotazu. Pohledy jsou takove "docasne" tabulky, kdezdo procedura
se spousti pokazde znova od nuly.
Odpovedá: Richard Kejval
18. 8. 2004 8:20
> Ohledne View a StoredProc se tyce, tak vsude tam kde to jde a vyhovuje
> tak davat pohledy, protoze narozdil od procedur se nevytvareji pri
> kazdem dotazu. Pohledy jsou takove "docasne" tabulky, kdezdo procedura
> se spousti pokazde znova od nuly.
Rekl bych, ze View i SP u FB neni nic jineho nez kus prekompilovaneho kodu,
ktery pak stejne musi vybirat data, takze bych dost pochyboval o terminu
"docasna tabulka". Vyhoda SP je, ze muzu zadat vstupni parametry podle,
kterych muzu omezovat. Prace s 100 tis tabulkami je pro view dost
nepouzitelne,
protoze prvne spojuje a pak teprve omezuje a bohuzel, bez pouziti indexu
Podle mne jedina vyhoda View je, ze se na nej daji navesit triggery a pri
aktualizaci dat, je pak rozhodit do vice tabulek, ale to se da zvladnout i
ve
framworku, takze u nas View vubec nepouzivame a nijak nam nechybi. Mluvim
pouze o FB ! Jestli se mylim, tak doufam, ze mi to objasni fundovanejsi
odbornici.
Odpovedá: David Fajfr
18. 8. 2004 9:04
> gyganticke vyhody View a StoredProc, ja osobne vlastne uzivatele
> nepoustim k tabulkam jinak nez pres View a StoredProc. Kdyz je nechaz
> zapisovat na primo udelaji ti v datech brutalni maglajz. Taky nerad
Puvodni dotaz byl o cteni dat. Pri zapisu s tebou souhlasim, ze bude lepsi a
bezpecnejsi procedura.
> primo v aplikaci pozivam spojovani vice tabulek, pak chces to same
> spojeni volat z vice ruznych mist, a kopirujes spojeni na trikrat.
Muzes ho mit v nejake konstante.
> Nakonec provedes zmenu a uz nedohledas, kde vsude to spojeni mas a musis
> ho predelat.
A kdyz provedes zmenu View, tak nemusis hledat, kde vsude v aplikaci ho mas
pouzite, abys zkontroloval spravnost dat?
David